using System;

using Org.BouncyCastle.Utilities.Date;

namespace Org.BouncyCastle.Bcpg.Sig
{
	/**
	* packet giving signature creation time.
	*/
	public class SignatureCreationTime
		: SignatureSubpacket
	{
		protected static byte[] TimeToBytes(
			DateTime time)
		{
			long t = DateTimeUtilities.DateTimeToUnixMs(time) / 1000L;
			byte[] data = new byte[4];
			data[0] = (byte)(t >> 24);
			data[1] = (byte)(t >> 16);
			data[2] = (byte)(t >> 8);
			data[3] = (byte)t;
			return data;
		}
		public SignatureCreationTime(
			bool	critical,
			byte[]	data)
			: base(SignatureSubpacketTag.CreationTime, critical, data)
		{
		}
		public SignatureCreationTime(
			bool		critical,
			DateTime	date)
			: base(SignatureSubpacketTag.CreationTime, critical, TimeToBytes(date))
		{
		}
		public DateTime GetTime()
		{
			long time = (long)(
					((uint)data[0] << 24)
				|	((uint)data[1] << 16)
				|	((uint)data[2] << 8)
				|	((uint)data[3])
				);
			return DateTimeUtilities.UnixMsToDateTime(time * 1000L);
		}
	}
}
